package com.legal.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.legal.domain.entity.UserAnswer;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author xiaopeng
 * @version 1.0
 * @description PracticeSubmissionDTO类用于封装练习提交的数据传输对象
 *              包含练习记录编号、用户编号、分类编号、开始时间和用户答案列表等属性
 */
@Data
public class PracticeSubmissionDTO {
    /**
     * 练习记录编号，标识一次具体的练习记录
     */
    private String recordNo;

    /**
     * 用户编号，标识进行练习的用户
     */
    private String userNo;

    /**
     * 分类编号，标识练习所属的分类
     */
    private String categoryNo;

    /**
     * 开始时间，记录练习开始的时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;


    /**
     * 用户答案列表，包含用户在练习中提交的所有答案
     */
    private List<UserAnswer> answers;

    /**
     * 获取用户答案的题目编号列表
     *
     * @return 用户答案的题目编号列表
     */
    public List<String> getQuestionNos() {
        return answers.stream()
                .map(UserAnswer::getQuestionNo)
                .collect(Collectors.toList());
    }
}
